#encoding:utf-8


#元组转字符串
def Data_conding(*self):
	self=self[0]					#剥离外层元组
	data_num = len(self)			#获取元素个数
	string = str(data_num)			#将元素个数赋值为首位
	for i in self:
		string = string + ',' + i	#将元组重新组合为字符串
	return string					#返回重新组合后的字符串


#字符串转元组
def Data_decoding(*self):
	self = self[0]						#剥离外层元组
	sub = self.find(',')				#获取首个下标
	if sub != -1:						#判断字符串是否有分组标记
		num = self[:sub]				#获取首个字符串
		if num.isdigit():				#判断字符串全是数字就执行以下代码
			num = int(num)				#将提取的首个字符串转换为整型
			now_str = self[(sub+1):]	#获取去掉首字符串的新字符串
			new_str = ('',)				#创建空元组
			i = 0
			while i < num:				#需要循环的次数
				sub = now_str.find(',')	#查找元素结束标记
				if sub == -1:			#当没有元素标记,还有最后一组元素
					new_str = new_str + (now_str[0:],)#将最后一组字符串添加到元组中
					break
				else:
					new_str = new_str + (now_str[:sub],)#将字符串添加到元组中
					now_str = now_str[(sub+1):]#重新获取剩余字符串
				i+=1
			new_str = new_str[1:]			#转换成功后的新元组
			return new_str					#返回转换后的元组
		else:							#当首字符串不全为数字时,返回错误信息
			return 'data_error'
	else:								#没有分组标记,直接转换
		tuple = (self,)
		return tuple

if __name__ == '__main__':
	Data_conding() or Data_decoding()